from django.shortcuts import render,redirect,HttpResponse
from django.contrib import auth
# Create your views here.
'''
使用auth模块 要用就用全套
'''
def login(request):
    if request.method=='POST':
        username=request.POST.get('username')
        password=request.POST.get('password')
        '''
        去用户表中校验数据
        1.表如何获取
        2.密码如何比对
        '''
        user_obj=auth.authenticate(request,username=username,password=password)
        print(user_obj) #用户对象
        # print(user_obj.username) #用户对象 jason
        # print(user_obj.password) #用户对象 pbkdf2_sha256$36000$c2QSkXFJH7p6$3CWOtvlkpOyF4JSsTHe2XW2EIsP4HCeyewKf7blcwVw=
        '''
        1.自动查找auth_user标签
        2.自动给密码加密再比对
        注意事项
            括号内必须同时传入用户名和密码
            不能只传用户名(异步就筛选出对象)
        '''
        #判断用户名  密码是否匹配
        if user_obj:
            #保存用户状态
            auth.login(request,user_obj) #类似于request.session['key']=user_obj
            #只要执行了该方法  你就可以在任何地方通过request.user 获取到当前登录的用户对象
            return redirect('/home/')

    return render(request,'login.html')

from django.contrib.auth.decorators import login_required

# @login_required(login_url='/login/') #局部配置  优先级 局部>全局
@login_required
def home(request):
    '''
    用户登陆之后才能看home
    :param request:
    :return:
    '''
    print(request.user) #用户对象  AnonymousUser 匿名用户
    #判断用户是否登录
    print(request.user.is_authenticated())
    '''
    1.自动去django_session里面查找对应用户对象给你封装到request.user中
    '''
    return HttpResponse('ok')

@login_required
def set_password(request):
    if request.method=='POST':
        old_password=request.POST.get('old_password')
        new_password=request.POST.get('new_password')
        confirm_password=request.POST.get('confirm_password')
        #先校验两次密码是否一致
        if new_password==confirm_password:
            #校验老密码对不对
            is_right=request.user.check_password(old_password) #自动加密比对密码
            if is_right:
                #修改密码
                request.user.set_password(new_password)
                request.user.save() #真正的修改数据库
        return redirect('/login/')
    return render(request,'set_password.html',locals())


#注销
@login_required
def logout(request):
    auth.logout(request)  #request.session.flush()
    return redirect('/login/')


from django.contrib.auth.models import User
def register(request):
    if request.method=='POST':
        username=request.POST.get('username')
        password=request.POST.get('password')
        #操作auth_user表写入数据
        # User.objects.create_user(username=username,password=password)#创建普通用户
        #使用代码创建超级用户  邮箱是必填的
    return render(request,'register.html')
